package model;

import model.Item;

import static org.junit.Assert.*;

import org.junit.Before;
import org.junit.Test;

public class ItemTest {

	private Item item;
        private Item subItem;

	@Before
	public void setUp() throws Exception {
		item = new Item();
		item.setPrice(200);
                
                subItem = new Item();
                subItem.setPrice(50);
	}

	@Test
	public void testAddGetSubItem() {

		assertFalse(item.hasSubItems());

		Item subItem = new Item();
		item.addSubItem(subItem);

		assertTrue(item.hasSubItems());

		Item subItem2 = new Item();
		item.addSubItem(subItem2);

		Item[] subItems = item.getSubItems();
		assertEquals(2, subItems.length);

		assertSame(subItem, subItems[0]);
		assertSame(subItem2, subItems[1]);
	}

	@Test
	public void testGetTotalPrice() {
            assertEquals(200, item.getTotalPrice(), 0);
            
            item.addSubItem(subItem);
            assertEquals(250, item.getTotalPrice(), 0);
            
            item.setDiscount(100);
            assertEquals(0, item.getTotalPrice(), 0);
            
	}
        
}